<?php
/***
 * implode goods from csv 
 */
class Helper_Csv_Implodegoods {
    /**
     * 解晰 属性 
     *  csv 中的属性 格式为  
     *  propCode_propName:code1_value1|code2_value2;... 
     *  属性  数组:
     *  array(
     *     'name'=>propName,
     *      'code'=>     propCode
     *      values=>(
     *          code=>value
     *          )
     *     )
     */
    static function parseprops($propstr){
        $return_props=array();
        $j=0;
        foreach(explode(';',$propstr) as $propstr){
            $j++;
            $i=preg_match('/((\w+)[_])?(\w+)[:](.*)/',$propstr,$m);
            if(!$i) continue 1;
            if(strlen($m[2])<=0){  // 如果 没有  code 自动加上 .
                $m[2]='p_'.$j;
            }
            $prop=array(
                'code'=>strtolower($m[2]),
                'name'=>$m[3],
            );
            $propvaluestr=$m[4];
            
            $propvalues=explode('|',$propvaluestr);
            $k=0;
            foreach($propvalues as $propvaluestr){
                $k++;
                $i=preg_match('/((\w+)[_])?(\w+)/',$propvaluestr,$m);
                if(!$i) continue 1;
                if(strlen($m[2])<=0){  // 如果 没有  code 自动加上 .
                    $m[2]='v_'.$k;
                }
                $prop['options'][]=$m[2];
                $prop['values'][]=$m[3];
            }
            $return_props[]=$prop;
        }
        return $return_props;
    }
    /***
     * 组合 属性 数组   到字符串  
     */         
    static function combinationprops($proparr){
        $propstr='';
        foreach($proparr as $prop){
            if(strlen($prop['code'])){
                $propstr.=$prop['code'].'_';
            }
            $propstr.=$prop['name'].':';
            foreach($prop['options'] as $k=>$o){
                if(isset($prop['values'][$k])&&strlen($prop['values'][$k])){
                    $propstr.=$prop['values'][$k].'_';
                }
                $propstr.=$o.'|';
            }
            $propstr=rtrim($propstr,'|');
            $propstr.=';';
        }
        return $propstr;
    }
    
    
}